package com.simtop.utils.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.BaseRowModel;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/** 解析监听器，
 * 每解析一行会回调invoke()方法。
 * 整个excel解析结束会执行doAfterAllAnalysed()方法
 */

/**
 * @ClassName ExcelListener
 * @Description TODO  监听器类
 * @Author lvyongwei
 * @Date 2020-05-21 14:13
 **/
public class ExcelListener extends AnalysisEventListener<BaseRowModel> {
    //可以通过实例获取该值
    /**
     * 自定义用于暂时存储data
     */
    private List<BaseRowModel> datas = new ArrayList<BaseRowModel>();

    private boolean flag = true;

    /**
     * 获取导入文件的标题，导入时候会读取数据硬塞给实体，所以判断头部是不是想要的文件
     * @param headMap
     * @param context
     */
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        Map<Integer,String> sysMap = new HashMap<>();
        sysMap.put(0,"工号/学号(必填)");
        sysMap.put(1,"真实姓名(必填)");
        sysMap.put(2,"性别");
        sysMap.put(3,"电话(必填)");
        sysMap.put(4,"邮箱(必填)");
        sysMap.put(5,"学校");
        System.out.println(sysMap.equals(headMap));
        /*if(!sysMap.equals(headMap)){
            flag = false;
        }*/
    }

    @Override
    public void invoke(BaseRowModel object, AnalysisContext context) {
        //System.out.println("当前行："+context.getCurrentRowNum());
        //数据存储到list，供批量处理，或后续自己业务逻辑处理。
        datas.add(object);
    }


    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // datas.clear();//解析结束销毁不用的资源
        if(flag == false){
            datas = null;
        }
    }

    public List<BaseRowModel> getDatas() {
        return datas;
    }

    public void setDatas(List<BaseRowModel> datas) {
        this.datas = datas;
    }
}
